package ae.pcfc.cldos.online.gs.service.client;
import java.util.List;

import ae.pcfc.cldos.online.gs.service.client.vo.BankGuaranteeOperationVO;
import ae.pcfc.cldos.online.gs.service.client.vo.GSFinancialDataVO;
import ae.pcfc.cldos.online.gs.service.client.vo.NotificationVO;
import ae.pcfc.cldos.online.gs.service.client.vo.StepCommentsVO;
import ae.pcfc.cldos.online.gs.service.client.vo.WarningCommentsVO;

public interface GovtSysGS  {
	/**
	 * @param clientLicenseNumber
	 * @return GSFinancialDataVO
	 */
	public GSFinancialDataVO retreiveFinancialData(String clientLicenseNumber);
	
	public boolean sendNotificationAndClientEmail(NotificationVO notificationVO);
	
	public boolean sendEmails(NotificationVO notificationVO);
	
	public String getNextOfflineAppId(String processCode);
	
	public void setClientMedicalType(String companyLicenseNo, String medicalType);
	
	public String getClientMedicalType(String companyLicenseNo);	
	
	public boolean cancelAppRequest(String offlineAppId);
	
	public boolean rejectAppRequest(String offlineAppId);
	
	public void bankGuaranteeOperation(BankGuaranteeOperationVO bankGuaranteeOperationVO );
	
	public String getWfStatus(String clientRefNo);
	
	public boolean setIncidentId(String offlineAppId, String incidentId);
	
	public void updateAppReqWorkFlowStatus(String offlineAppId,String wfStatus);
	
	public void insertStepComments(StepCommentsVO stepCommentsVO);
	
	public List<WarningCommentsVO>  getWarningRemarks(String licNo);
	
	public boolean isRequestExist(String processCode,String empId, String visitorId);
	
	public enum OfflineStatus{
		ONLINE_INIT("ON_INIT"),
		OFFLINE_INITIATED("ON_SUBM");
		
		private OfflineStatus(String code){
			this.code = code;
		}
		
		private String code;
		
		public String getCode() {
			return code;
		}
	}

}
